package main

import (
	"bufio"
	"fmt"
	"io"
	"io/ioutil"
	"os"
)

//文件读取
func main() {
	fmt.Println("examp19")
	//方式一
	file, err := os.Open("test.txt") //文件存在才行
	if err != nil {
		fmt.Println("未找到文件")
		return
	}
	defer file.Close()
	reader := bufio.NewReader(file) //打开文件
	for {
		str, err := reader.ReadString('\n') //每次读取一行
		if err != nil || err == io.EOF {    //读取文件最后结束时一搬会io.EOF
			fmt.Println(err)
			break // 读完或发生错误
		}
		fmt.Printf(str)
	}

	//方式二 通过flag参数来判断控制是否新建和追加读写等权限操作
	fd, err := os.OpenFile("test1.txt", os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0660)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer fd.Close()
	c, err := fd.WriteString("写入数据") //写文件
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("写入数据长度", c)
	//读取文件
	data, err := ioutil.ReadFile("test1.txt")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("文件内容", string(data))
	//ioutil.WriteFile()写入文件
}
